﻿



/**
 * 默认的控件类型，其它的都是重载相应的函数.
 */

window.Dcqtech_Form_Controls = {};
// let Dcqtech_Form_Controls =  {};

window.Dcqtech_Form_Controls.Default = {
    /**
     * 控件初始化。
     */
    "init": function (id, isEdit, wdInfo) {
    },
    /**
     * 设置控件值
     */
    "setValue": function (id, value, fieldInfo, $root, isFirstSet) {
        if (!$root) $root = $("#udf_wf_form");
        $root.find("[dcqtech_data='" + id + "']").val(value);
    },
    /**
     * 获取控件值
     */
    "getValue": function (id) {
        return $("[dcqtech_data='" + id + "']").val();
    },
    /**
     * 设置控件默认值
     */
    "setDefaultValue": function (id, $root, fieldInfo) {
        var value = fieldInfo.defaultValue;
        if (!value) return;
        value = template.render(value,ServerParam);
        $root.find("[dcqtech_data='" + id + "']").val(value);

    },
    /**
     * 设置控件为只读状态
     */
    "setReadonly": function (id, isReadOnly, wdInfo,$root) {
        if (typeof isReadOnly != "boolean") {
            isReadOnly = isReadOnly == "1";
        }
        if (isReadOnly) {
            $root.find("[dcqtech_data='" + id + "']").prop("disabled", isReadOnly);
        }
    },
    /**
     * 设置控件是否可见
     */
    "setVisible": function (id, isVisible, wdInfo,$root) {
        if (typeof isVisible != "boolean") {
            isVisible = isVisible == "1";
        }
        if (!isVisible) {
            $root.find("[dcqtech_data='" + id + "']").hide();
        }
    },
    /**
     * 设置控件是否需要检测
     */
    "setCheckInfo": function (id, wdInfo,$root) {
        if ((wdInfo.isNullable == "0")&&(wdInfo.isReadOnly != "1")) {
            $root.find("[dcqtech_data='" + id + "']").attr("required", "required");
        }
    },

    /**
     * 编辑页面的事件
     */
    "setEditEvent": function (id, fieldInfo, $root) {
        var $control = $root.find("[dcqtech_id='" + id + "'] ");
        if ($control.attr("dcq_inited") == "1") return;
        $control.attr("dcq_inited", "1");
        if (fieldInfo.isReadOnly === "1") {
            $control.prop("disabled", true);
        }
        else {
            if (fieldInfo.isNullable == "0") {
                $control.attr("required", "required");
            }
        }
    },
    /**
     * 查看页面的事件
     */
    "setViewEvent": function (id, wdInfo, $root) {
        $root.find("[dcqtech_data='" + id + "']").prop("disabled", true);
    },
    /*
    * 保存前会调用控件的此方法。
    */
    "beforeSave": function (id, dataControl) {
        console.info("beforeSave:", id, dataControl);
    }
}


// 检测是否是 DOM 元素 
function isElement(o) {
    if (o && (typeof HTMLElement === "function" || typeof HTMLElement === "object") && o instanceof HTMLElement) {
        return true;
    } else {
        return (o && o.nodeType && o.nodeType === 1) ? true : false;
    };
};

// 检测是否是 jquery 对象 
function isJquery(o) {
    return (o && o.length && (typeof jQuery === "function" || typeof jQuery === "object") && o instanceof jQuery) ? true : false;
};

function getJqueryObject(sel) {
    if (isElement(sel)) return jQuery(sel);
    if (isJquery(sel)) return sel;
    console.error("getJqueryObject不是DOM对象或jQuery对象:", sel);
    return null;
}

function getControlId($jq) {
    return $jq.attr("dcqtech_data") || $jq.attr("dcqtech_id");
}

function getFieldInfoById(id) {
    return window.Dcqtech_Form.formInfos.fieldInfos[id];
}



